/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.siteEncheres.client.seance;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.gwtext.client.widgets.MessageBox;
import com.gwtext.client.widgets.Panel;

import domain.Observer.Seance;
import domain.Utilisateur;
import java.util.List;

/**
 *
 * @author Francois
 */
public class IhmListerSeance extends Panel {

    private Utilisateur utilisateurEnCours = new Utilisateur();
    private TextBox txt = new TextBox();
    private HorizontalPanel panel = new HorizontalPanel();
    private String condition="";
    
    final AsyncCallback<Utilisateur> callbackUtilisateurEnCours = new AsyncCallback<Utilisateur>() {

        @Override
        public void onSuccess(Utilisateur u) {
            utilisateurEnCours = u;
            Integer id = utilisateurEnCours.getIdUtilisateur();
            //Window.alert("" + id.toString());
        }

        @Override
        public void onFailure(Throwable caught) {
            // exception = formaterException(caught.getMessage());
            //MessageBox.alert(exception);
        }
    };
    final AsyncCallback<List<Seance>> callbackSeance = new AsyncCallback<List<Seance>>() {

        @Override
        public void onSuccess(List<Seance> seances) {
            panel.add(new GrilleSeance(seances, utilisateurEnCours));
        }

        @Override
        public void onFailure(Throwable caught) {
            String exception = formaterException(caught.getMessage());
            MessageBox.alert(exception);
        }
    };
    

    public IhmListerSeance(String condition) {
        this.condition = condition;
        setFrame(true);
        setBorder(false);
        setSize(1000, 600);
        panel.setSize("1000px", "600px");
        add(panel);
        //setTitle("Liste des seances");

        //On recupere l'utilisateur en cours pour savoir
        //qui va faire les actions sur les seances.
        //getService().getUtilisateurEnCours(callbackUtilisateurEnCours);
        getService().getUtilisateurEnCours(callbackUtilisateurEnCours);
        getService().listerSeance("AND p.titre LIKE '%"+ condition +"%'", 100, 1, callbackSeance);
    }

    public static GwtSeanceAsync getService() {
        return GWT.create(GwtSeance.class);
    }

    /**
     * M√©thode servant a separer le "java.lang.Exception:" du
     * message de l'exception qu on ne veut pas a l affichage.
     * 
     * @param exception Message contenu dans l exception.
     * @return ce qu il y a apres le "java.lang.Exception"
     * si cette chaine est presente, le message en entier sinon.
     */
    public String formaterException(String exception) {
        String[] split = exception.split(":");
        if (split[0].compareTo("java.lang.Exception") == 0) {
            return split[1];
        } else {
            return exception;
        }
    }
}
